package Multithreading.Exercise002;

/**
 * ClassName:MyThread
 * Package:Multithreading.Exercise002
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/3/5-17:00
 * @Version:v1.0
 */
public class MyThread extends Thread{
    //表示这个类所有对象,都共有ticked数据
    //同步代码块：把操作共享数据的代码锁起来
    //格式：
    //sychronized(锁){
    //    操作共享数据代码
    //}
    //特点：
    //        1.锁默认打开,有一个线程进去了,锁自动关闭
    //        2.里面的代码全部执行完毕,线程出来,锁自动打开
    static int ticket =0;
    //锁对象,一定是唯一的
    static Object obj = new Object();
    @Override
    public void run() {
        while (true){
            //同步代码块
            //   obj/MyThread.class
            synchronized (obj){
                if (ticket<100){
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    ticket++;
                    System.out.println(getName()+"正在卖第"+ticket+"张票!!");
                }else {
                    break;
                }
            }
        }
    }
}
